﻿using System.Runtime.InteropServices;
using Godot.core.io;

namespace Godot.core
{
    public class MessageQueue
    {
		private const int __TYPE_CALL = 0;
		private const int __TYPE_NOTIFICATION = 1;
        private const int __TYPE_SET = 2;

        private struct __Message 
        {
		    public uint instance_ID;
		    public StringName target;
		    public short type;
		    
			public short notification;
            public short args
            {
                get { return notification; }
                set { notification = value; }
            }	
	    };
	
        private static MessageQueue __singleton;

        public static MessageQueue singleton
        {
            get
            {
                return __singleton;
            }
        }

        public MessageQueue()
        {
            __singleton = this;
        }

        public Error push_call(uint p_id, StringName p_method,
            Variant p_arg1 = null, Variant p_arg2 = null, Variant p_arg3 = null, Variant p_arg4 = null, Variant p_arg5 = null)
        {
            throw new System.NotImplementedException();
        }

        public Error push_call(Object p_object, StringName p_method,
            Variant p_arg1 = null, Variant p_arg2 = null, Variant p_arg3 = null, Variant p_arg4 = null, Variant p_arg5 = null)
        {
	        return push_call(p_object.get_instance_ID(), p_method, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5);
        }


        internal void flush()
        {
            throw new System.NotImplementedException();
        }
    }
}
